//
//  UITextViewController.swift
//  HHSwift
//
//  Created by 华宏 on 2020/2/6.
//  Copyright © 2020 huahong. All rights reserved.
//

import UIKit

class HHAttachment: NSTextAttachment {
  
    override func attachmentBounds(for textContainer: NSTextContainer?, proposedLineFragment lineFrag: CGRect, glyphPosition position: CGPoint, characterIndex charIndex: Int) -> CGRect {
        
        return CGRect(x: 0, y: 0, width: self.image?.size.width ?? 0, height: self.image?.size.height ?? 0)
    }
}


class UITextViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .white
        title = "UITextView"
        
        
        let textView = UITextView(frame: self.view.bounds)
        view.addSubview(textView)
        textView.delegate = self
        textView.isEditable = true
        
       //图文混排
        let message = "新华社北京3月13日电（记者叶昊鸣）记者13日从应急管理部了解到，财政部、应急管理部当日向青海省下拨中央自然灾害救灾资金1亿元，主要用于支持做好青海省玉树、果洛等地严重雪灾受灾群众救助工作，保障受灾群众基本生活。\n新华社北京3月13日电（记者叶昊鸣）记者13日从应急管理部了解到，财政部、应急管理部当日向青海省下拨中央自然灾害救灾资金1亿元，主要用于支持做好青海省玉树、果洛等地严重雪灾受灾群众救助工作，保障受灾群众基本生活。\n新华社北京3月13日电（记者叶昊鸣）记者13日从应急管理部了解到，财政部、应急管理部当日向青海省下拨中央自然灾害救灾资金1亿元，主要用于支持做好青海省玉树、果洛等地严重雪灾受灾群众救助工作，保障受灾群众基本生活。\n新华社北京3月13日电（记者叶昊鸣）记者13日从应急管理部了解到，财政部、应急管理部当日向青海省下拨中央自然灾害救灾资金1亿元，主要用于支持做好青海省玉树、果洛等地严重雪灾受灾群众救助工作，保障受灾群众基本生活。\n新华社北京3月13日电（记者叶昊鸣）记者13日从应急管理部了解到，财政部、应急管理部当日向青海省下拨中央自然灾害救灾资金1亿元，主要用于支持做好青海省玉树、果洛等地严重雪灾受灾群众救助工作，保障受灾群众基本生活。"
        
        
        let attributedText = NSMutableAttributedString(string: message)
        attributedText.addAttribute(.foregroundColor, value: UIColor.red, range: NSRange(location: 0, length: message.count))
        
         // 创建图片图片附件
        let attachment = NSTextAttachment()
        let image = UIImage(named: "04")
        attachment.image = image
        attachment.bounds = CGRect(x: 0, y: 0, width: textView.contentSize.width-20, height: 200/*textView.width * (image?.size.height ??  0) / (image?.size.width ?? 1)*/)
        
        let attachmentStr = NSAttributedString(attachment: attachment)
        attributedText.insert(attachmentStr, at: message.count)
        
        
        //超链接
        let range:NSRange = (message as NSString).range(of: "记者叶昊鸣")
        attributedText.addAttribute(.link, value: "http://www.baidu.com", range:range)
        
        // 段落
        let paragraphStyle = NSMutableParagraphStyle()
        
        //1.首行 缩进  ( 管理第一行)
        paragraphStyle.firstLineHeadIndent = 20
        
        // 2.缩进（管理 除第一行以外的行）
        paragraphStyle.headIndent = 10
        
        //3.行间距倍数
        paragraphStyle.lineHeightMultiple = 2
        
        attributedText.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: message.count))
        
        textView.attributedText = attributedText
        
        
        
        
        
        
    }
    

    

}

extension UITextViewController:UITextViewDelegate{
    
    func textViewDidChange(_ textView: UITextView) {
        
    }
    
    
    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {
        
        print("URL:\(URL)")
        return true
    }
    
    func textView(_ textView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange) -> Bool {
        
        print("textAttachment:\(textAttachment)")
        return true
    }
}



//加载HTML
//- (NSMutableAttributedString *)getHtmlStringWithString:(NSString *)string
//{
//    NSDictionary *options = @{NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType,
//                              NSCharacterEncodingDocumentAttribute : @(NSUTF8StringEncoding)};
//
//    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
//    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];
//
//    // 设置段落格式
//    NSMutableParagraphStyle *para = [[NSMutableParagraphStyle alloc] init];
//    para.lineSpacing = 8;
//    [attStr addAttribute:NSParagraphStyleAttributeName value:para range:NSMakeRange(0, attStr.length)];
//
//    // 设置文本的Font
//    [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, attStr.length)];
//
//    return attStr;
//}
